package main

import "fmt"

func myFunc(arg1 interface{}) { //可以传入不同类型的参数,interface{}表示万能接口
	fmt.Println("myFunc is caled...")
	fmt.Println(arg1)
	//interface{}使用断言机制来判断传入的究竟为何类型,方便后面进行不同的逻辑业务区分
	value, ok := arg1.(Book)
	if !ok {
		fmt.Println("arg1 is not book type")
	} else {
		fmt.Println("arg1 is string type,value=", value)
		fmt.Printf("arg1 type is %T", value)
	}
}

type Book struct {
	auth string
}

func main() {
	book := Book{"stormfat"}
	myFunc(book)
	myFunc("abc")
	myFunc(16)
}
